package cn.org.wifit.userserver.im.utils;

import io.netty.channel.ChannelHandlerContext;

import java.util.concurrent.ConcurrentHashMap;

/**
 * 这个工具类主要用于存储这台用户服务器到所有的活动的IMServer服务器的稳定的TCP长连接
 * 其中最主要的是使用了ConcurrentHashMap这个高并发线程安全支持的map。<br>
 * String：一个由zk集群server的sequence和ipx的sequence构成的字符串，格式如同0000000000_0000000001<br>
 * Context：一个tcp链接的上下文信息<br>
 * @author yinwenjie
 */
public class IMUserTCPChannelUtils {
	private ConcurrentHashMap<String, Object> contextMap = new ConcurrentHashMap<String, Object>();
	
	public static final IMUserTCPChannelUtils CHANNELMAP = new IMUserTCPChannelUtils();
	
	/**
	 * 保存一个IMUser和一个IMServer的TCP长连接的通道上下文信息。如果已经有了sessionid对应的TCP上下文，则进行替换。
	 * @param sessionid 会话id，一个由zk集群server的sequence和ipx的sequence构成的字符串，格式如同0000000000_0000000001（全系统唯一）
	 * @param channelContext TCP长连接的上下文信息
	 */
	public void setTCPChannel(String sessionid , ChannelHandlerContext channelContext) {
		
	}
	
	/**
	 * 获取一个会话id所对应的TCP通道上下文信息，如果没有相应的key对应的tcp上下文，则返回null
	 * @param sessionid 会话id，一个由zk集群server的sequence和ipx的sequence构成的字符串，格式如同0000000000_0000000001（全系统唯一）
	 * @return
	 */
	public ChannelHandlerContext getTCPChannel(String sessionid) {
		return null;
	}
}
